home *** CD-ROM | disk | FTP | other *** search
/ Just Call Me Internet / Just Call Me Internet.iso / prog / atari / m2 / cat3src / magic / d / magicxbi.d < prev    next >
Text File  |  1997-10-26  |  11KB  |  319 lines

  1. (*----------------------------------------------------------------------*
  2.  *                                                                      *
  3.  *         MAGIC   Modula's  All purpose  GEM  Interface  Cadre         *
  4.  *                 ÿ         ÿ            ÿ    ÿ          ÿ             *
  5.  *----------------------------------------------------------------------*
  6.  * Version 3.30  02.02.1992     (C)90/91/92 by Peter Hellinger Software *
  7.  *----------------------------------------------------------------------*
  8.  *            Dieses Modul ist urheberrechtlich geschtzt.              *
  9.  *                                                                      *
  10.  * Die Ver”ffentlichung des Quelltextes oder Teilen daraus in schrift-  *
  11.  * licher Form, insbesondere in Zeitschriften, sowie die Verbreitung    *
  12.  * ber Public-Domain-H„ndler bedarf der ausdrcklichen schriftlichen   *
  13.  * Genehmigung des Autors!                                              *
  14.  *                                                                      *
  15.  * Der Autor gibt hiermit die ausdrckliche Erlaubnis, das Modul jeder- *
  16.  * zeit auch im Quelltext weiterzugegeben, sofern dessen Text und ins-  *
  17.  * besondere dieser Urheberrechts-Vermerk nicht ver„ndert wird, und     *
  18.  * durch die Weitergabe kein finanzieller Nutzen entsteht. Der Autor    *
  19.  * beh„lt sich das Recht vor, diese Erlaubnis jederzeit u. ohne Angaben *
  20.  * von Grnden zu widerrufen.                                           *
  21.  *----------------------------------------------------------------------*)
  22.  
  23. (*----------------------------------------------------------------------*
  24.  * MagicXBIOS   Extendend Basic Input Output System  Modula-2 Interface *
  25.  *----------------------------------------------------------------------*)
  26.  
  27. DEFINITION MODULE MagicXBIOS;
  28.  
  29. FROM MagicSys   IMPORT  Nil, Null, Bit0, Bit1, Bit2, Bit3, Bit4, Bit5, Bit6,
  30.                         Bit7, Bit8, Bit9, Bit10, Bit11, Bit12, Bit13, Bit14,
  31.                         Bit15, LOC, Byte, ByteSet, sWORD, sINTEGER, sCARDINAL,
  32.                         sBITSET, lINTEGER, lCARDINAL, lWORD, lBITSET;
  33.  
  34.  
  35.  
  36.  
  37.  
  38. IMPORT  SYSTEM;
  39.  
  40. CONST   DisableMouse =  0;
  41.         RelativeMouse = 1;
  42.         AbsoluteMouse = 2;
  43.         KeycodeMouse =  4;
  44.  
  45. TYPE    PARAM =         RECORD
  46.                          topMode:  Byte;
  47.                          buttons:  Byte;
  48.                          xparam:   Byte;
  49.                          yparam:   Byte;
  50.                          EXTRA:    RECORD
  51.                                     xmax:     sCARDINAL;
  52.                                     ymax:     sCARDINAL;
  53.                                     xinitial: sCARDINAL;
  54.                                     yInitial: sCARDINAL;
  55.                                    END;
  56.                         END;
  57.  
  58. PROCEDURE Initmouse (type: sINTEGER; VAR param: ARRAY OF LOC; vec: PROC);
  59.  
  60. PROCEDURE Physbase (): SYSTEM.ADDRESS;
  61.  
  62. PROCEDURE Logbase (): SYSTEM.ADDRESS;
  63.  
  64. PROCEDURE Getrez (): sINTEGER;
  65.  
  66. PROCEDURE Setscreen (logLoc, physLoc: SYSTEM.ADDRESS; rez: sINTEGER);
  67.  
  68. TYPE    Palette =       ARRAY [0..15] OF sCARDINAL;
  69.  
  70. PROCEDURE Setpalette (VAR palette: ARRAY OF LOC);
  71.  
  72. PROCEDURE Setcolor (colourNum, colour: sCARDINAL): sCARDINAL;
  73.  
  74. PROCEDURE Floprd (buf: SYSTEM.ADDRESS; drv, sec, trck, side, count: sINTEGER): sINTEGER;
  75.  
  76. PROCEDURE Flopwr (buf: SYSTEM.ADDRESS; drv, sec, trck, side, count: sINTEGER): sINTEGER;
  77.  
  78. PROCEDURE Flopfmt (buf: SYSTEM.ADDRESS; drv, spt, trck, side, il, virg: sINTEGER): sINTEGER;
  79.  
  80. PROCEDURE Midiws (VAR string: ARRAY OF LOC; len: sCARDINAL);
  81.  
  82. PROCEDURE Mfpint (intNo: sCARDINAL; vector: PROC);
  83.  
  84. CONST   RS232 =         0;
  85.         IKBD =          1;
  86.         MIDI =          2;
  87.  
  88. TYPE    PtrIOREC =      POINTER TO IOREC;
  89.         IOREC =         RECORD
  90.                          ibuf:     SYSTEM.ADDRESS;     (* pointer to buffer *)
  91.                          ibufsize: sCARDINAL;    (* buffer size *)
  92.                          ibufhd:   sCARDINAL;    (* head index *)
  93.                          ibuftl:   sCARDINAL;    (* tail index *)
  94.                          ibuflow:  sCARDINAL;    (* low water mark *)
  95.                          ibufhi:   sCARDINAL;    (* high water mark *)
  96.                         END;
  97.  
  98. PROCEDURE Iorec (dev: sINTEGER): SYSTEM.ADDRESS;
  99.  
  100. CONST   Sp19200 =       0;
  101.         Sp9600 =        1;
  102.         Sp4800 =        2;
  103.         Sp3600 =        3;
  104.         Sp2400 =        4;
  105.         Sp2000 =        5;
  106.         Sp1800 =        6;
  107.         Sp1200 =        7;
  108.         Sp600 =         8;
  109.         Sp300 =         9;
  110.         Sp200 =         10;
  111.         Sp150 =         11;
  112.         Sp134 =         12;
  113.         Sp110 =         13;
  114.         Sp75 =          14;
  115.         Sp50 =          15;
  116.  
  117. CONST   XONXOFF =       Bit0;
  118.         RTSCTS =        Bit1;
  119.  
  120.  
  121. PROCEDURE Rsconf (speed: sINTEGER; flavor: sBITSET;  u, r, t, s: sINTEGER): sINTEGER;
  122.  
  123. TYPE    Keycode =       POINTER TO ARRAY [0..132] OF CHAR;  (* JGS *)
  124.  
  125. TYPE    PtrKEYTAB =     POINTER TO KEYTAB;
  126.         KEYTAB =        RECORD
  127.                          unshift:  Keycode;
  128.                          shift:    Keycode;
  129.                          capslock: Keycode;
  130.                         END;
  131.  
  132. PROCEDURE Keytbl (VAR unshift, shift, capslock: SYSTEM.ADDRESS): SYSTEM.ADDRESS;
  133.  
  134. PROCEDURE Random (): lCARDINAL;
  135.  
  136. CONST   SameNumber =    -1;
  137.         NewNumber =     01000000H;
  138.         
  139. CONST   SameType =      -1;
  140.         SS180 =         0;
  141.         DS360 =         1;
  142.         SS360 =         2;
  143.         DS720 =         3;
  144.  
  145. CONST   NoExecute =     0;
  146.         Execute =       1;
  147.         
  148. PROCEDURE Protobt (buf: SYSTEM.ADDRESS; num: lINTEGER; typ, exec: sINTEGER);
  149.  
  150. PROCEDURE Flopver (buf: SYSTEM.ADDRESS; drv, sec, trck, side, count: sINTEGER): sINTEGER;
  151.  
  152. PROCEDURE Scrdmp;
  153.  
  154. CONST   CURSHIDE =      0;
  155.         CURSSHOW =      1;
  156.         CURSBLINK =     2;
  157.         CURSNOBLINK =   3;
  158.         CURSSETRATE =   4;
  159.         CURSGETRATE =   5;
  160.  
  161. PROCEDURE Cursconf (function, operand: sINTEGER): sINTEGER;
  162.  
  163. PROCEDURE Settime (datetime: lCARDINAL);
  164.  
  165. PROCEDURE Gettime (): lCARDINAL;
  166.  
  167. PROCEDURE Bioskeys;
  168.  
  169. PROCEDURE Ikbdws (str: ARRAY OF LOC; len: sCARDINAL);
  170.  
  171. PROCEDURE Jdisint (intNo: sCARDINAL);
  172.  
  173. PROCEDURE Jenabint (intNo: sCARDINAL);
  174.  
  175. PROCEDURE Giaccess (regno: sCARDINAL; data: Byte): sCARDINAL;
  176.  
  177. PROCEDURE Offgibit (bitno: sCARDINAL);
  178.  
  179. PROCEDURE Ongibit (bitno: sCARDINAL);
  180.  
  181. CONST   TimerA =  0;
  182.         TimerB =  1;
  183.         TimerC =  2;
  184.         TimerD =  3;
  185.  
  186. PROCEDURE Xbtimer (timer, control, data: sCARDINAL; vec: PROC);
  187.  
  188. PROCEDURE Dosound (REF  data: ARRAY OF LOC);
  189.  
  190. CONST   DaisyWheel =    Bit0;
  191.         Monochrome =    Bit1;
  192.         EpsonPrinter =  Bit2;
  193.         Final =         Bit3;
  194.         RS232Port =     Bit4;
  195.         SingleSheet =   Bit5;
  196.  
  197. PROCEDURE Setprt (config: sBITSET): sBITSET;
  198.  
  199.  
  200. TYPE    PtrKBVECS =     POINTER TO KBVECS;
  201.         KBVECS =        RECORD
  202.                          midivec:  SYSTEM.ADDRESS;     (* MIDI input *)
  203.                          vkbderr:  SYSTEM.ADDRESS;     (* keyboard error *)
  204.                          vmidierr: SYSTEM.ADDRESS;     (* MIDI error *)
  205.                          statvec:  SYSTEM.ADDRESS;     (* ikdb status packet *)
  206.                          mousevec: SYSTEM.ADDRESS;     (* mouse packet *)
  207.                          clockvec: SYSTEM.ADDRESS;     (* clock packet *)
  208.                          joyvec:   SYSTEM.ADDRESS;     (* joystick packet *)
  209.                          midisys:  SYSTEM.ADDRESS;
  210.                          ikbdsys:  SYSTEM.ADDRESS;
  211.                         END;
  212.  
  213. PROCEDURE Kbdvbase(): SYSTEM.ADDRESS;
  214.  
  215. PROCEDURE Kbrate (initial, repeat: sINTEGER): sCARDINAL;
  216.  
  217. TYPE    PtrPBDEF =      POINTER TO PBDEF;
  218.         PBDEF =         RECORD
  219.                          pbScrptr:      SYSTEM.ADDRESS;
  220.                          pbOffset:      sINTEGER;
  221.                          pbWidth:       sINTEGER;
  222.                          pbHeight:      sINTEGER;
  223.                          pbLeft:        sINTEGER;
  224.                          pbRight:       sINTEGER;
  225.                          pbScrez:       sINTEGER;
  226.                          pbPrrez:       sINTEGER;
  227.                          pbColptr:      SYSTEM.ADDRESS;
  228.                          pbPrttype:     lCARDINAL;
  229.                          pbPrport:      sINTEGER;
  230.                          pbMask:        sINTEGER;
  231.                         END;
  232.  
  233. PROCEDURE Prtblk (block: ARRAY OF LOC);
  234.  
  235. PROCEDURE Vsync;
  236.  
  237. PROCEDURE Supexec (code: SYSTEM.ADDRESS);
  238.  
  239. PROCEDURE Puntaes;
  240.  
  241. PROCEDURE Blitmode (flag: sINTEGER): sBITSET;
  242.  
  243. PROCEDURE Floprate (devno: sCARDINAL; newrate: sINTEGER): sINTEGER;
  244.  
  245.  
  246. (*====================================================================*)
  247. (*      Folgende Funktionen sind erst auf TT-Rechnern verfgbar!      *)
  248. (*====================================================================*)
  249.  
  250.  
  251. PROCEDURE DMAread (sec: lINTEGER; cnt: sINTEGER; buf: SYSTEM.ADDRESS; 
  252.                    dev: sINTEGER): lINTEGER;
  253.  
  254. PROCEDURE DMAwrite (sec: lINTEGER; cnt: sINTEGER; buf: SYSTEM.ADDRESS;
  255.                     dev: sINTEGER): lINTEGER;
  256.  
  257.  
  258. TYPE MAPTAB =   RECORD
  259.                   bconstat  : PROCEDURE() : sINTEGER;
  260.                   bconin    : PROCEDURE() : lINTEGER;
  261.                   bcostat   : PROCEDURE() : lINTEGER;
  262.                   bconout   : PROCEDURE();
  263.                   rsconf    : PROCEDURE() : lCARDINAL;
  264.                   iorec     : PtrIOREC;
  265.                 END; 
  266.     BCONMAP = POINTER TO
  267.                 RECORD
  268.                   maptab     : POINTER TO ARRAY sCARDINAL OF MAPTAB;
  269.                   maptabsize : sINTEGER;
  270.                 END;
  271.  
  272. PROCEDURE Bconmap (dev: sINTEGER): SYSTEM.ADDRESS;
  273. (* Wenn das Mapping der seriellen Schnittstelle umgehaengt wird, so wird als
  274.  * Rueckgabewert das alte Mapping geliefert. Mit Bconmap (-2) kriegt man
  275.  * einen Pointer auf folgende Struktur:
  276.  * struct bconmap {
  277.  *  LONG *maptab;     /* ptr to map table */
  278.  *  WORD maptabsize;  /* number of lines in table */
  279.  * };
  280.  * Jeder maptab-Eintrag besteht aus sechs Pointern auf die schnittstellen-
  281.  * spezifischen Routinen fuer Bconstat, Bconin, Bconout, Rsconf und Iorec.
  282. *)
  283.  
  284.  
  285. CONST   NVMread =  0;
  286.         NVMwrite = 1;
  287.         NVMinit =  2; (* loescht NVM und initialisiert Checksumme *)
  288.  
  289. PROCEDURE NVMaccess (mode, start, cnt: sINTEGER; buf: SYSTEM.ADDRESS): sINTEGER;
  290.  
  291.  
  292. CONST   GRAY =   4096;  (* 2^12 *)
  293.         SMEAR =  32768; (* 2^15 *)
  294.         STLOW =  0;     (* 000-00000000 *)
  295.         STMED =  256;   (* 001- *)
  296.         STHIGH = 512;   (* 010- *)
  297.         TTLOW =  1792;  (* 111- *)
  298.         TTMED =  1024;  (* 100- *)
  299.         TTHIGH = 1536;  (* 110- *)
  300.  
  301. PROCEDURE EsetShift (mode: sINTEGER);
  302.  
  303. PROCEDURE EgetShift (): sINTEGER;
  304.  
  305. PROCEDURE EsetBank (bank: sINTEGER): sINTEGER;
  306.  
  307. PROCEDURE EsetColor (num, col: sINTEGER): sINTEGER;
  308.  
  309. PROCEDURE EsetPalette (start, cnt: sINTEGER; pal: ARRAY OF LOC): sINTEGER;
  310.  
  311. PROCEDURE EgetPalette (start, cnt: sINTEGER; VAR pal: ARRAY OF LOC): sINTEGER;
  312.  
  313. PROCEDURE EsetGray (mode: sINTEGER): sINTEGER;
  314.  
  315. PROCEDURE EsetSmear(mode: sINTEGER): sINTEGER;
  316.  
  317. END MagicXBIOS.
  318.  
  319.